package main

import "fmt"

// 位运算--针对的是二进制

func main() {
	a := 1
	a = a << 20
	fmt.Println(a)

	fmt.Printf("%b\n", 8)
	// & 按位与  二进制的位上全部都是1  结果就是1   否则结果就是 0
	fmt.Println(8 & 8) // 1000 & 1000 > 1000 的十进制是 8
	// | 按位或  二进制的位上有一个是1  结果就是1   否则结果就是 0
	fmt.Println(2 | 1) // 10 ｜ 1  > 11 的十进制是3
	// 按位异或  二进制的位上两位比较  不相等为 1  否则为 0
	fmt.Println(2 ^ 1) // 10 ^ 1 >  11
	// << 左移
	fmt.Println(1 << 10) // 1000000000 > 1024
	// >> 右移
	fmt.Println(1024 >> 10) // 1
}
